<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Processamento extends CI_Controller {
        
    function __construct(){
        parent::__construct();
        if (!$this->session->userdata('logged_in')){
            redirect('login');exit;
        }
        else{
            $componente = array('componente'=>'processamento');
            $this->session->set_userdata($componente);
            $this->load->helper(array('form', 'url', 'date'));
            $this->load->model('Pagamento_Model');
        }        
    }

    function index(){
        if(!$this->session->userdata('componente')){
            echo "Componente indefinido!";
        }else{
            $componente = $this->session->userdata('componente').'_view'; 
            $this->load->view('layout/header_view',$componente);
            $this->load->view('menu_view');
            $msg['msg'] = '';
            $this->load->view('upload_form', $msg);
            $this->load->view('layout/footer_view');            
        }        
    }

    function processa(){
        if($this->session->userdata('perfil') != 'cliente'){
            if(!empty($_FILES['arquivo']['name'])){       
                // Pasta onde o arquivo vai ser salvo
                $_UP['pasta'] = 'inc/processamento/';
                // Tamanho máximo do arquivo (em Bytes)
                $_UP['tamanho'] = 1024 * 1024 * 2; // 2Mb
                // Array com as extensões permitidas
                $_UP['extensoes'] = array('ret');
                // Renomeia o arquivo? (Se true, o arquivo será salvo como .ret e um nome único)
                $_UP['renomeia'] = false;
                // Array com os tipos de erros de upload do PHP
                $_UP['erros'][0] = 'Não houve erro';
                $_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';
                $_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';
                $_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';
                $_UP['erros'][4] = 'Não foi feito o upload do arquivo';
                // Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro
                if ($_FILES['arquivo']['error'] != 0) {
                    die("Não foi possível fazer o upload, erro:<br />" . $_UP['erros'][$_FILES['arquivo']['error']]);
                    exit; // Para a execução do script
                }
                // Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar
                // Faz a verificação da extensão do arquivo
                $extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));
                if (array_search($extensao, $_UP['extensoes']) === false) {
                    echo "Por favor, envie arquivos com a seguinte extensão: ret";
                }
                // Faz a verificação do tamanho do arquivo
                else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) {
                    echo "O arquivo enviado é muito grande, envie arquivos de até 2Mb.";
                }
                // O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta
                else {
                    // Primeiro verifica se deve trocar o nome do arquivo
                    if($_UP['renomeia'] == true){
                        // Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .ret
                        $nome_final = time().'.ret';

                    }else{
                        // Mantém o nome original do arquivo
                        $nome_final = $_FILES['arquivo']['name'];
                    }
                    // Depois verifica se é possível mover o arquivo para a pasta escolhida
                    if(move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)){
                        // Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
                        # echo "Upload efetuado com sucesso!";
                        # echo '<br /><a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>';
                    }else{
                        // Não foi possível fazer o upload, provavelmente a pasta está incorreta
                        echo "Não foi possível enviar o arquivo, tente novamente";
                    }
                }       
                if($this->baixaBoleto($nome_final) === true){
                    if($this->cancelaReserva() === true){ # Este método chama função de email para próxima reserva ao cancelar a atual.
                        if($this->emailIdentificacaoPgto() === true){
                            $componente = $this->session->userdata('componente').'_view'; 
                            $this->load->view('layout/header_view',$componente);
                            $this->load->view('menu_view');
                            $msg['msg'] = "Processamento realizado com Sucesso!";
                            $this->load->view('upload_form', $msg);
                            $this->load->view('layout/footer_view');  
                        }
                    }
                }
            }else{
                exit(utf8_decode('<script>alert("Por favor informe o arquivo enviado pela instituição bancária!");
                                window.history.back();</script>'));
            }
        }else{
            exit(utf8_decode("Você não tem permissão para executar esta operação!"));
        }
    }

    function baixaBoleto($nomeArquivo){
        $arquivo = file(base_url().'inc/processamento/'.$nomeArquivo);
        $boletos = $this->Pagamento_Model->gerenciaPagamentos();
        for($x=0; $x<count($arquivo); $x++){            
            $numero = explode(" ", $arquivo[$x]);
            if(substr($numero[0], 13) === 'T'){
                for($i=0; $i<count($boletos);$i++){
                    if($boletos[$i]->numboleto === $numero[2]){
                        $this->Pagamento_Model->baixaBoleto($boletos[$i]->numboleto);   
                        // LIBERA O SEGUNDO BOLETO NA ADMINISTRAÇÃO DOS CLIENTES.
                        @$boleto2 = $this->Pagamento_Model->emiteSegundoBoleto($boletos[$i]->reserva_idreserva);
                        // ENVIA O SEGUNDO BOLETO POR EMAIL PARA O CLIENTE.
                        @$link      = base_url()."boletoCliente/geraBoletoEmail/".$boleto2[0]->idboleto;
                        @$cliente   = $this->Pagamento_Model->clientePorId($boleto2[0]->reserva_usuario_idusuario);
                        @$reserva   = $this->Pagamento_Model->reservaPorBoleto($boleto2[0]->reserva_idreserva);
                        $this->email->set_newline("\r\n");
                        $this->email->from('no-reply@teatrodiplomata.com.br', 'Teatro Diplomata');
                        @$this->email->to($cliente[0]->email); 
                        @$this->email->subject('Boleto da segunda parcela para pagamento. - Reserva Teatro Diplomata');
                        @$this->email->message("Segue abaixo o link para geração de boleto da segunda parcela para pagamento com o prazo de 24 hs, referente à reserva contratada para o dia ".date('d/m/Y', strtotime($reserva[0]->dtinicial)).", Evento: ".$reserva[0]->descricao_reserva.".<br /><br /><a href=$link>Geração de Boleto</a>
                            <br /><br /> Favor não responder este email.
                            <br /><br />
                            <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'>---<br />Atenciosamente,</p>
                            <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial; font-weight: bold;'>TEATRO DIPLOMATA - UNIRB</p>
                            <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/home_silver.png' style='float: left;' />Avenida Tamburugy, 474 - Patamares, Salvador - BA, 41680-440</p>
                            <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/phone_silver.png' style='float: left;' />(71) 3368-8342</p>
                            <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;''><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/mail_silver.png' style='float: left;' />reserva@teatrodiplomata.com.br</p>
                            ");
                        $this->email->send();
                        $msg['msg'] = "Emails";
                    }
                }               
            }
        }
        return true;
    }

    function cancelaReserva(){
        $boletos = $this->Pagamento_Model->gerenciaPagamentos();
        //$qtDias = date('Y-m-d',strtotime($dtinicial . "+1 days")); 
        $hoje = date("Y-m-d");      
        for($i=0; $i<count($boletos);$i++){
            if($boletos[$i]->dtvencimento < date("Y-m-d", strtotime( "$hoje -2 day" )) && $boletos[$i]->baixa != 1 && $boletos[$i]->emitido != 0){
                $dtreserva = $this->Pagamento_Model->cancelaReserva($boletos[$i]->reserva_idreserva);
                $this->emailProximoFila($dtreserva);                    
            }
        }
        return true;
    }

    function emailIdentificacaoPgto(){
        $boletos = $this->Pagamento_Model->gerenciaPagamentos();
        for($i=0; $i<count($boletos);$i++){
            $reserva = $this->Pagamento_Model->reservaPorBoleto($boletos[$i]->reserva_idreserva);           
            if(@$boletos[$i]->dtvencimento < date('Y-m-d', now()) && @$boletos[$i]->baixa != 1 && @$boletos[$i]->emitido != 0 && @$reserva->cancelada != 1){                
                # EMAIL PARA O CLIENTE INICIAL QUE NÃO EFETUOU O PAGAMENTO NA DATA DO VENCIMENTO.
                $cliente = $this->Pagamento_Model->clientePorId($boletos[$i]->usuario_idusuario);               
                $this->email->set_newline("\r\n");
                $this->email->from('no-reply@teatrodiplomata.com.br', 'Teatro Diplomata');
                $this->email->to($cliente[0]->email); 
                $this->email->subject('Pagamento não Identificado. - Teatro Diplomata');
                $this->email->message("O pagamento da reserva para o dia <b>".date('d/m/Y', strtotime($reserva[0]->dtinicial))."</b>, evento: <b>".$reserva[0]->descricao_reserva."</b><br />
                    não foi identificado. Favor entrar em contato através
                    do número (71) 3368-8342, caso o boleto já tenha sido pago. Caso contrário, em 24hs a reserva será cancelada!
                    <br /><br />
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'>---<br />Atenciosamente,</p>
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial; font-weight: bold;'>TEATRO DIPLOMATA - UNIRB</p>
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/home_silver.png' style='float: left;' />Avenida Tamburugy, 474 - Patamares, Salvador - BA, 41680-440</p>
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/phone_silver.png' style='float: left;' />(71) 3368-8342</p>
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;''><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/mail_silver.png' style='float: left;' />reserva@teatrodiplomata.com.br</p>
                    ");
                $this->email->send();
                $msg['msg'] = "Emails";
            }
        }
        return true;
    }

    function emailProximoFila($data){
        @$proximo   = $this->Pagamento_Model->proximaReserva($data);
        @$boleto    = $this->Pagamento_Model->proximoBoleto($proximo[0]->usuario_idusuario, $proximo[0]->idreserva);
        @$link      = base_url()."boletoCliente/geraBoletoEmail/".$boleto[0]->idboleto;
        # EMAIL PARA O PRÓXIMO CLIENTE NA FILA AGUARDANDO PELA RESERVA.
        @$cliente = $this->Pagamento_Model->clientePorId($proximo[0]->usuario_idusuario);
        @$reserva = $this->Pagamento_Model->reservaPorBoleto($proximo[0]->idreserva);
        $this->email->set_newline("\r\n");
        $this->email->from('no-reply@teatrodiplomata.com.br', 'Teatro Diplomata');
        @$this->email->to($cliente[0]->email); 
        $this->email->subject('Geração de Boleto para reserva. - Teatro Diplomata');
                $this->email->message("O prazo do ultimo agendamento expirou, acesse o <a href=$link>link</a> abaixo e imprima seu boleto para Pagamento com o prazo de 24 hs.<br /><br /><a href=$link>Geração de Boleto</a>
                    <br /><br /> Favor não responder este email.
                    <br /><br />
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'>---<br />Atenciosamente,</p>
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial; font-weight: bold;'>TEATRO DIPLOMATA - UNIRB</p>
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/home_silver.png' style='float: left;' />Avenida Tamburugy, 474 - Patamares, Salvador - BA, 41680-440</p>
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;'><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/phone_silver.png' style='float: left;' />(71) 3368-8342</p>
                    <p style='font-size: 12px; color: #333; font-family: Georgia, Verdana, Arial;''><img src='http://teatrodiplomata.com.br/wp-content/themes/teatro/images/assets/contact_icons/mail_silver.png' style='float: left;' />reserva@teatrodiplomata.com.br</p>
                    ");
        $this->email->send();
        $msg['msg'] = "Emails";
    }
}